package com.example.smartagrisys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.smartagrisys.dto.ComplaintDTO;
import com.example.smartagrisys.entity.Complaint;

import java.util.List;

/**
 * 投诉服务接口
 */
public interface ComplaintService extends IService<Complaint> {
    
    /**
     * 获取买家的投诉列表
     *
     * @param buyerId 买家ID
     * @return 投诉列表
     */
    List<ComplaintDTO> getBuyerComplaints(Long buyerId);
    
    /**
     * 获取卖家的投诉列表
     *
     * @param sellerId 卖家ID
     * @return 投诉列表
     */
    List<ComplaintDTO> getSellerComplaints(Long sellerId);
    
    /**
     * 创建投诉
     *
     * @param complaintDTO 投诉信息
     * @return 创建的投诉
     */
    ComplaintDTO createComplaint(ComplaintDTO complaintDTO);
    
    /**
     * 获取投诉详情
     *
     * @param id 投诉ID
     * @return 投诉详情
     */
    ComplaintDTO getComplaintById(Long id);
    
    /**
     * 更新投诉状态
     *
     * @param id     投诉ID
     * @param status 新状态
     * @return 是否成功
     */
    boolean updateComplaintStatus(Long id, String status);
    
    /**
     * 回复投诉
     *
     * @param id           投诉ID
     * @param replyContent 回复内容
     * @return 是否成功
     */
    boolean replyComplaint(Long id, String replyContent);
    
    /**
     * 解决投诉
     *
     * @param id       投诉ID
     * @param solution 解决方案
     * @return 是否成功
     */
    boolean resolveComplaint(Long id, String solution);
    
    /**
     * 关闭投诉
     *
     * @param id 投诉ID
     * @return 是否成功
     */
    boolean closeComplaint(Long id);
    
    /**
     * 跟进投诉
     *
     * @param id      投诉ID
     * @param content 跟进内容
     * @return 是否成功
     */
    boolean followUpComplaint(Long id, String content);
    
    /**
     * 将实体对象转换为DTO
     *
     * @param complaint 投诉实体
     * @return 投诉DTO
     */
    ComplaintDTO convertToDTO(Complaint complaint);
    
    /**
     * 将DTO转换为实体对象
     *
     * @param complaintDTO 投诉DTO
     * @return 投诉实体
     */
    Complaint convertToEntity(ComplaintDTO complaintDTO);
} 